package com.acsior.hibernate.vo;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import com.acsior.dac.impl.hibernate.vo.GeneratorKey;

/**
 * ShipmentService entity. @author MyEclipse Persistence Tools <b><i>powered by
 * Belev</i></b>
 */
@Entity
@Table(name = "shipment_services")
@GeneratorKey(tableName = "service_requests")
public class ShipmentServiceVO extends ServiceRequestVO {

	private static final long serialVersionUID = 2069156507450778271L;

	@Column(name = "barcode", length = 100)
	private String barcode;

	@Column(name = "contents")
	private String contents;

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "customer_id")
	private CustomerVO customer;

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "recipient_customer_id")
	private CustomerVO customerByRecipientCustomer;

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "sender_customer_id")
	private CustomerVO customerBySenderCustomer;

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "deliver_employee_id")
	private EmployeeVO deliverEmployee;

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "deliver_structure_id")
	private StructureVO deliverStructure;

	@Column(name = "group_barcodes")
	private String groupBarcodes;

	@Column(name = "group_entry", nullable = false)
	private boolean groupEntry;

	@Column(name = "incoming", nullable = false)
	private boolean incoming;

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "nom_country_id", nullable = false)
	private NomCountryVO nomCountry;

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "nom_customs_presentation_id")
	private NomCustomsPresentationVO nomCustomsPresentation;

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "nom_dispatch_method_id")
	private NomDispatchMethodVO nomDispatchMethod;

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "nom_not_delivered_instruction_id")
	private NomNotDeliveredInstructionVO nomNotDeliveredInstruction;

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "nom_reply_coupon_type_id")
	private NomReplyCouponTypeVO nomReplyCouponType;

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "nom_shipment_type_id", nullable = false)
	private NomShipmentTypeVO nomShipmentType;

	@Column(name = "parcel_bg_zone", nullable = false)
	private Integer parcelBgZone;

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "postman_id")
	private PostmanVO postman;

	@Column(name = "quantity", nullable = false)
	private Integer quantity;

	@Column(name = "receive_date", length = 23)
	private Date receiveDate;

	@Column(name = "remark")
	private String remark;

	@Temporal(TemporalType.DATE)
	@Column(name = "reply_coupon_date", length = 10)
	private Date replyCouponDate;

	@Column(name = "weight", nullable = false)
	private Integer weight;

	/** default constructor */
	public ShipmentServiceVO() {
		super();
	}

	/** @return the barcode */
	public String getBarcode() {
		return this.barcode;
	}

	/** @return the contents */
	public String getContents() {
		return this.contents;
	}

	/** @return the customer */
	public CustomerVO getCustomer() {
		return this.customer;
	}

	/** @return the customerByRecipientCustomer */
	public CustomerVO getCustomerByRecipientCustomer() {
		return this.customerByRecipientCustomer;
	}

	/** @return the customerBySenderCustomer */
	public CustomerVO getCustomerBySenderCustomer() {
		return this.customerBySenderCustomer;
	}

	/** @return the deliverEmployee */
	public EmployeeVO getDeliverEmployee() {
		return this.deliverEmployee;
	}

	/** @return the deliverStructure */
	public StructureVO getDeliverStructure() {
		return this.deliverStructure;
	}

	/** @return the groupBarcodes */
	public String getGroupBarcodes() {
		return this.groupBarcodes;
	}

	/** @return the nomCountry */
	public NomCountryVO getNomCountry() {
		return this.nomCountry;
	}

	/** @return the nomCustomsPresentation */
	public NomCustomsPresentationVO getNomCustomsPresentation() {
		return this.nomCustomsPresentation;
	}

	/** @return the nomDispatchMethod */
	public NomDispatchMethodVO getNomDispatchMethod() {
		return this.nomDispatchMethod;
	}

	/** @return the nomNotDeliveredInstruction */
	public NomNotDeliveredInstructionVO getNomNotDeliveredInstruction() {
		return this.nomNotDeliveredInstruction;
	}

	/** @return the nomReplyCouponType */
	public NomReplyCouponTypeVO getNomReplyCouponType() {
		return this.nomReplyCouponType;
	}

	/** @return the nomShipmentType */
	public NomShipmentTypeVO getNomShipmentType() {
		return this.nomShipmentType;
	}

	/** @return the parcelBgZone */
	public Integer getParcelBgZone() {
		return this.parcelBgZone;
	}

	/** @return the postman */
	public PostmanVO getPostman() {
		return this.postman;
	}

	/** @return the quantity */
	public Integer getQuantity() {
		return this.quantity;
	}

	/** @return the receiveDate */
	public Date getReceiveDate() {
		return this.receiveDate;
	}

	/** @return the remark */
	public String getRemark() {
		return this.remark;
	}

	/** @return the replyCouponDate */
	public Date getReplyCouponDate() {
		return this.replyCouponDate;
	}

	/** @return the weight */
	public Integer getWeight() {
		return this.weight;
	}

	/** @return the groupEntry */
	public boolean isGroupEntry() {
		return this.groupEntry;
	}

	/** @return the incoming */
	public boolean isIncoming() {
		return this.incoming;
	}

	/**
	 * @param barcode
	 *            the barcode to set
	 */
	public void setBarcode(String barcode) {
		this.barcode = barcode;
	}

	/**
	 * @param contents
	 *            the contents to set
	 */
	public void setContents(String contents) {
		this.contents = contents;
	}

	/**
	 * @param customer
	 *            the customer to set
	 */
	public void setCustomer(CustomerVO customer) {
		this.customer = customer;
	}

	/**
	 * @param customerByRecipientCustomer
	 *            the customerByRecipientCustomer to set
	 */
	public void setCustomerByRecipientCustomer(CustomerVO customerByRecipientCustomer) {
		this.customerByRecipientCustomer = customerByRecipientCustomer;
	}

	/**
	 * @param customerBySenderCustomer
	 *            the customerBySenderCustomer to set
	 */
	public void setCustomerBySenderCustomer(CustomerVO customerBySenderCustomer) {
		this.customerBySenderCustomer = customerBySenderCustomer;
	}

	/** @param deliverEmployee */
	public void setDeliverEmployee(EmployeeVO deliverEmployee) {
		this.deliverEmployee = deliverEmployee;
	}

	/** @param deliverStructure */
	public void setDeliverStructure(StructureVO deliverStructure) {
		this.deliverStructure = deliverStructure;
	}

	/**
	 * @param groupBarcodes
	 *            the groupBarcodes to set
	 */
	public void setGroupBarcodes(String groupBarcodes) {
		this.groupBarcodes = groupBarcodes;
	}

	/**
	 * @param groupEntry
	 *            the groupEntry to set
	 */
	public void setGroupEntry(boolean groupEntry) {
		this.groupEntry = groupEntry;
	}

	/**
	 * @param incoming
	 *            the incoming to set
	 */
	public void setIncoming(boolean incoming) {
		this.incoming = incoming;
	}

	/**
	 * @param nomCountry
	 *            the nomCountry to set
	 */
	public void setNomCountry(NomCountryVO nomCountry) {
		this.nomCountry = nomCountry;
	}

	/**
	 * @param nomCustomsPresentation
	 *            the nomCustomsPresentation to set
	 */
	public void setNomCustomsPresentation(NomCustomsPresentationVO nomCustomsPresentation) {
		this.nomCustomsPresentation = nomCustomsPresentation;
	}

	/**
	 * @param nomDispatchMethod
	 *            the nomDispatchMethod to set
	 */
	public void setNomDispatchMethod(NomDispatchMethodVO nomDispatchMethod) {
		this.nomDispatchMethod = nomDispatchMethod;
	}

	/**
	 * @param nomNotDeliveredInstruction
	 *            the nomNotDeliveredInstruction to set
	 */
	public void setNomNotDeliveredInstruction(
			NomNotDeliveredInstructionVO nomNotDeliveredInstruction) {
		this.nomNotDeliveredInstruction = nomNotDeliveredInstruction;
	}

	/**
	 * @param nomReplyCouponType
	 *            the nomReplyCouponType to set
	 */
	public void setNomReplyCouponType(NomReplyCouponTypeVO nomReplyCouponType) {
		this.nomReplyCouponType = nomReplyCouponType;
	}

	/**
	 * @param nomShipmentType
	 *            the nomShipmentType to set
	 */
	public void setNomShipmentType(NomShipmentTypeVO nomShipmentType) {
		this.nomShipmentType = nomShipmentType;
	}

	/**
	 * @param parcelBgZone
	 *            the parcelBgZone to set
	 */
	public void setParcelBgZone(Integer parcelBgZone) {
		this.parcelBgZone = parcelBgZone;
	}

	/** @param postman */
	public void setPostman(PostmanVO postman) {
		this.postman = postman;
	}

	/**
	 * @param quantity
	 *            the quantity to set
	 */
	public void setQuantity(Integer quantity) {
		this.quantity = quantity;
	}

	/**
	 * @param receiveDate
	 *            the receiveDate to set
	 */
	public void setReceiveDate(Date receiveDate) {
		this.receiveDate = receiveDate;
	}

	/**
	 * @param remark
	 *            the remark to set
	 */
	public void setRemark(String remark) {
		this.remark = remark;
	}

	/** @param replyCouponDate */
	public void setReplyCouponDate(Date replyCouponDate) {
		this.replyCouponDate = replyCouponDate;
	}

	/**
	 * @param weight
	 *            the weight to set
	 */
	public void setWeight(Integer weight) {
		this.weight = weight;
	}

}